From 35301530bb2a75ca8a8c3453c8bea016d01dc969 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 25 Aug 2017 16:55:39 +0200 Subject: [PATCH] texthandle: Update to using GdkEvent API --- gtk/gtktexthandle.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/gtk/gtktexthandle.c b/gtk/gtktexthandle.c index 6a289edc6e..1eeddd5f1f 100644 --- a/gtk/gtktexthandle.c +++ b/gtk/gtktexthandle.c @@ -187,6 +187,9 @@ gtk_text_handle_widget_event (GtkWidget *widget, GtkTextHandle *handle) { GtkTextHandlePrivate *priv; + GdkEventType event_type; + gdouble event_x, event_y; + guint state; gint pos; priv = handle->priv; @@ -195,31 +198,35 @@ gtk_text_handle_widget_event (GtkWidget *widget, if (pos < 0) return FALSE; - if (event->type == GDK_BUTTON_PRESS) + event_type = gdk_event_get_event_type (event); + gdk_event_get_coords (event, &event_x, &event_y); + + if (event_type == GDK_BUTTON_PRESS) { - priv->windows[pos].dx = event->button.x; - priv->windows[pos].dy = event->button.y; + priv->windows[pos].dx = event_x; + priv->windows[pos].dy = event_y; priv->windows[pos].dragged = TRUE; gtk_text_handle_set_state (handle, pos, GTK_STATE_FLAG_ACTIVE); g_signal_emit (handle, signals[DRAG_STARTED], 0, pos); } - else if (event->type == GDK_BUTTON_RELEASE) + else if (event_type == GDK_BUTTON_RELEASE) { g_signal_emit (handle, signals[DRAG_FINISHED], 0, pos); priv->windows[pos].dragged = FALSE; gtk_text_handle_unset_state (handle, pos, GTK_STATE_FLAG_ACTIVE); } - else if (event->type == GDK_ENTER_NOTIFY) + else if (event_type == GDK_ENTER_NOTIFY) gtk_text_handle_set_state (handle, pos, GTK_STATE_FLAG_PRELIGHT); - else if (event->type == GDK_LEAVE_NOTIFY) + else if (event_type == GDK_LEAVE_NOTIFY) { if (!priv->windows[pos].dragged && (event->crossing.mode == GDK_CROSSING_NORMAL || event->crossing.mode == GDK_CROSSING_UNGRAB)) gtk_text_handle_unset_state (handle, pos, GTK_STATE_FLAG_PRELIGHT); } - else if (event->type == GDK_MOTION_NOTIFY && - event->motion.state & GDK_BUTTON1_MASK && + else if (event_type == GDK_MOTION_NOTIFY && + gdk_event_get_state (event, &state) && + state & GDK_BUTTON1_MASK && priv->windows[pos].dragged) { gint x, y, handle_width, handle_height; @@ -235,8 +242,8 @@ gtk_text_handle_widget_event (GtkWidget *widget, priv->windows[pos].widget, NULL, &rect); - x = rect.x + event->motion.x - priv->windows[pos].dx; - y = rect.y + event->motion.y - priv->windows[pos].dy + + x = rect.x + event_x - priv->windows[pos].dx; + y = rect.y + event_y - priv->windows[pos].dy + priv->windows[pos].border.top / 2; if (pos == GTK_TEXT_HANDLE_POSITION_CURSOR && -- 2.30.2